DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, Excel PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করার জন্য। DAX-এর মধ্যে Recursive Functions ব্যবহার করা হয় যখন ডেটার মধ্যে hierarchical structure থাকে, যেমন organizational structure, product categories, বা account hierarchies।
হায়ারার্কিকাল ডেটার জন্য Recursive Functions খুবই গুরুত্বপূর্ণ কারণ এটি ডেটা সম্পর্কিত হায়ারার্কির মধ্যে সম্পর্কিত মান বের করতে সহায়ক। এখানে আমরা DAX Recursive Functions এবং hierarchical data-এর জন্য ব্যবহৃত বিভিন্ন ফাংশন যেমন PATH, PATHITEM, PATHLENGTH, এবং USERELATIONSHIP নিয়ে আলোচনা করব।
১. PATH ফাংশন
PATH ফাংশনটি একটি নির্দিষ্ট hierarchical structure-এর মধ্যে যেকোনো parent-child relationship-এর পথ বের করতে ব্যবহৃত হয়। এটি বিশেষভাবে organizational hierarchies বা account structures এর জন্য ব্যবহার করা হয়।
Syntax:
PATH(<parent_column>, <child_column>)
- <parent_column>: প্যারেন্ট কলাম (যেমন, প্রতিটি আইটেমের প্যারেন্ট বা শ্রেণী).
- <child_column>: চাইল্ড কলাম (যেমন, প্রতিটি আইটেমের চাইল্ড বা উপশ্রেণী).
ব্যবহার:
ধরা যাক, আপনার Employee টেবিল রয়েছে, যেখানে EmployeeID এবং ManagerID রয়েছে। আপনি যদি কর্মচারীদের managerial hierarchy দেখতে চান, তাহলে PATH ফাংশনটি ব্যবহার করা হবে:
Employee Path = PATH(Employees[ManagerID], Employees[EmployeeID])
এখানে:
- PATH(Employees[ManagerID], Employees[EmployeeID]) প্রত্যেক কর্মচারীর জন্য তাদের Manager থেকে তাদের নিজস্ব EmployeeID পর্যন্ত একটি পথ তৈরি করবে।
২. PATHITEM ফাংশন
PATHITEM ফাংশনটি PATH ফাংশনের সাথে সম্পর্কিত এবং এটি নির্দিষ্ট একটি পদক্ষেপ বা আইটেম থেকে hierarchy path এর একটি নির্দিষ্ট অংশ বের করতে ব্যবহৃত হয়।
Syntax:
PATHITEM(<path>, <position>, <data_type>)
- : এটি একটি পাথ কলাম যা PATH ফাংশন থেকে আসবে।
- : এখানে আপনি নির্দিষ্ট করেন যে, আপনি পাথের কোন পদক্ষেপটি চান (যেমন, 1, 2, 3,...).
- <data_type> (optional): এটি STRING বা INTEGER হতে পারে, নির্দিষ্ট করে আপনি কিসের রিটার্ন চান।
ব্যবহার:
ধরা যাক, আপনি একটি কর্মচারীর manager এর স্তর দেখতে চান, তাহলে PATHITEM ফাংশনটি ব্যবহার করতে হবে:
Employee Level = PATHITEM(Employees[EmployeePath], 1, INTEGER)
এখানে:
- PATHITEM ফাংশনটি EmployeePath এর প্রথম পদক্ষেপ বা প্রথম ManagerID ফেরত দিবে।
- INTEGER ডেটাটাইপ হিসাবে রিটার্ন করবে।
৩. PATHLENGTH ফাংশন
PATHLENGTH ফাংশনটি PATH ফাংশন থেকে তৈরি হওয়া পাথের দৈর্ঘ্য নির্ধারণ করতে ব্যবহৃত হয়, অর্থাৎ কতটি পদক্ষেপ রয়েছে।
Syntax:
PATHLENGTH(<path>)
- : এটি PATH ফাংশন দ্বারা তৈরি হওয়া পাথ।
ব্যবহার:
ধরা যাক, আপনি যদি কর্মচারীর hierarchy depth জানতে চান (কতটি স্তর রয়েছে), তাহলে PATHLENGTH ফাংশনটি ব্যবহার করবেন:
Employee Depth = PATHLENGTH(Employees[EmployeePath])
এখানে:
- PATHLENGTH ফাংশনটি EmployeePath কলামের দৈর্ঘ্য বের করবে, যা কর্মচারীর হায়ারার্কি স্তরের সংখ্যা দেখাবে।
৪. USERELATIONSHIP ফাংশন
USERELATIONSHIP ফাংশনটি inactive relationships সক্রিয় করতে ব্যবহৃত হয়, যখন আপনাকে একাধিক সম্পর্কের মধ্যে থেকে একটি সম্পর্ক সক্রিয় করতে হয়।
Syntax:
USERELATIONSHIP(<column1>, <column2>)
- : প্রথম কলাম, যা একটি টেবিলের অংশ।
- : দ্বিতীয় কলাম, যা অন্য টেবিলের অংশ।
ব্যবহার:
ধরা যাক, Sales এবং Products টেবিলের মধ্যে দুটি সম্পর্ক রয়েছে। আপনি যদি UserID এর মাধ্যমে সম্পর্কিত ডেটা বের করতে চান, তবে USERELATIONSHIP ফাংশনটি ব্যবহার করা হবে:
Sales by Product = CALCULATE(SUM(Sales[Amount]), USERELATIONSHIP(Sales[ProductID], Products[ProductID]))
এখানে:
- USERELATIONSHIP ফাংশনটি Products[ProductID] এবং Sales[ProductID] এর মধ্যে ইনঅ্যাকটিভ সম্পর্কটি সক্রিয় করবে।
- তারপর, CALCULATE ফাংশনটি বিক্রয়ের পরিমাণের যোগফল বের করবে।
Recursive Calculation Example Using PATH
ধরা যাক, আপনি একটি parent-child hierarchy এর জন্য কর্মচারীদের managerial level বের করতে চান। PATH এবং PATHITEM ফাংশনগুলির সাহায্যে আপনি কর্মচারীদের স্তরের সম্পর্ক বের করতে পারেন।
Manager Level = PATHITEM(Employees[EmployeePath], 2, INTEGER)
এখানে:
- EmployeePath কলামটি PATH ফাংশনের মাধ্যমে তৈরি হয়েছে এবং PATHITEM এর মাধ্যমে কর্মচারীর second manager স্তর বের করা হয়েছে।
Recursive Functions এর উপকারিতা
- Hierarchical Data Analysis:
- PATH, PATHITEM, এবং PATHLENGTH ফাংশনগুলি ডেটার hierarchical relationships বিশ্লেষণ করতে ব্যবহৃত হয়, যেমন organizational structure বা product category।
- Efficient Calculations:
- Recursive calculations করার মাধ্যমে আপনি সহজে parent-child relationships এর মধ্যে গভীরতা বা স্তর বের করতে পারেন, যা অন্যথায় খুব জটিল হতে পারে।
- Dynamic Reporting:
- এই ফাংশনগুলির মাধ্যমে আপনি dynamic reports তৈরি করতে পারেন, যেখানে ডেটার relationship অনুযায়ী তথ্য দেখানো হয়।
- Multiple Relationships:
- USERELATIONSHIP ফাংশনটি একাধিক সম্পর্ক পরিচালনা করতে সাহায্য করে, যেখানে আপনাকে ডেটার বিভিন্ন স্তরের তথ্য একত্রিত করার প্রয়োজন হতে পারে।
সারাংশ
Recursive Functions DAX-এ একটি শক্তিশালী টুল যা hierarchical data বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করার জন্য ব্যবহৃত হয়। PATH, PATHITEM, PATHLENGTH, এবং USERELATIONSHIP ফাংশনগুলি ডেটার মধ্যে parent-child relationships এবং managerial hierarchies নির্ধারণ করতে সাহায্য করে। এই ফাংশনগুলো Power BI বা Excel-এ জটিল hierarchical data বিশ্লেষণকে সহজ করে তোলে এবং কাস্টম রিপোর্টিংয়ের জন্য কার্যকরী ক্যালকুলেশন তৈরি করতে সহায়ক হয়।
Read more